package view.simulationview;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JProgressBar;

import model.simulationmodel.SimulationModel;

/**
 * Dieses JDialog visualisiert den Fortschritt beim Erzeugen einer
 * Wahrheitstabelle
 * 
 * @author Team Locsi
 * 
 */
@SuppressWarnings("serial")
public class ProgressWindow extends JDialog {

	private JProgressBar bar;
	private SimulationModel sModel;

	/**
	 * Konstruktor, welcher ein Progress Window erzeugt
	 * 
	 * @param comp
	 *            <code>Component</code> zugehoeriger JFrame
	 * @param min
	 *            <code>min</code> Minimum des Fortschrittsbalken
	 * @param max
	 *            <code>max</code> Maximum des Fortschrittsbalken
	 */
	public ProgressWindow(SimulationModel sModel, Component comp, int min, int max) {
		super((JFrame) comp);
		this.sModel = sModel;
		this.setTitle("Erzeuge Wahrheitstabelle...");
		this.setSize(200, 100);
		bar = new JProgressBar(min, max);
		bar.setStringPainted(true);
		this.setLayout(new BorderLayout());
		this.add(bar, BorderLayout.CENTER);
		JButton cancel = new JButton("Abbrechen");
		cancel.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				ProgressWindow.this.sModel.stopCreatingLogicTable();
			}
		});
		this.add(cancel, BorderLayout.SOUTH);
		this.setLocationRelativeTo(comp);
		this.setVisible(true);
	}

	/**
	 * Diese Methode setzt den aktuellen Wert der Progressbar
	 * 
	 * @param value
	 */
	public void setValue(int value) {
		this.bar.setValue(value);
	}
}
